/*
  1.请写出javascript的三种循环
  (1)while循环：while(条件){循环的代码/循环体}
  (2)do ...while循环：do{code}while(条件)
  (3)for循环：for(定义初始变量; 条件判断; 步长){代码}

  2.在控制台中用循环输出 0 0.2 0.4 0.6 0.8 1
  for (var i = 0; i <= 10; i++) {
    if(i % 2 === 0){
      console.log(i/10);
    }
  }

  3.请写出break和continue作用和区别
  break：直接结束整个循环。
  continue：跳过当前的循环，继续下一次循环

  4.循环输出1-100 里的奇数
  for (var i = 1; i <= 100; i++) {
    if (i % 2 === 1) {
      console.log(i);
    }
  }

  5.有一座桥，当你身上所拥有的钱大于 30000 时，每过一次桥则需要支付 3000 元。当你身上的钱小于或等于 30000 时，每过一次桥则需要支付你身上 10%的钱。已知有一个人身上有 33000 元，问此人能过这座桥多少次之后，身上的钱会少于 100 块?
  var money = 33000;
  var time = 0;

  while (money > 30000) {
    money -= 3000;
    time++;
  }
  while (money <= 30000) {
    money -= money * 0.1;
    time++;
    if(money<100){
      break;
    }
  }
  
  console.log(`此人能过这座桥${time}次之后，身上的钱会少于 100 块`);

  6.小明去存 1000 钱，每天会产生 1%的利息，求问，30 天后，小明可以拿回多少钱
  var money = 1000;
  for (var i = 1; i <= 30; i++){
    money += 1000*0.01;
  }
  console.log(`30天后，小明可以拿回${money}块钱`);

  7.有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求出这个数列的前20项之和。(程序分析：请抓住分子与分母的变化规律。)
  // 答案
  var sum = 0;
  var fz = 2;
  var fm = 1;
  for (var i = 1; i <= 20; i++) {
    var res = fz / fm;
    var c = fz;
    fz = c + fm;
    fm = c;
    sum += res;
  }
  console.log('前20项之和为：' + sum);

  8.求1000以内所有的水仙花数（水仙花数：是指一个三位数，每个位数上数字的3次幂之和等于数字它本身 例如：153）
  // 答案
  for (var i = 100; i <= 1000; i++) {
    var a = parseInt(i / 100 % 10);
    var b = parseInt(i / 10 % 10);
    var c = parseInt(i % 10);
    if (i == a * a * a + b * b * b + c * c * c) {
      console.log(i);
    }
  }

  9. 制作一个黑白棋棋盘（效果图见班群）
  <style>
    .row {
      width: 500px;
      font-size: 0;
    }
    span {
      width: 50px;
      height: 50px;
      display: inline-block;
    }
  </style>
  for (var i = 1; i <= 5; i++) {
    document.write('<div class="row">')
    if (i % 2 === 0) {
      for (var j = 1; j <= 5; j++) {
        if (j % 2 === 0) {
          document.write('<span style="background:#000"></span>')
        } else {
          document.write('<span style="background:#fff"></span>')
        }
      }
    } else {
      for (var j = 1; j <= 5; j++) {
        if (j % 2 === 0) {
          document.write('<span style="background:#fff"></span>')
        } else {
          document.write('<span style="background:#000"></span>')
        }
      }
    }
    document.write('</div>')
  }      

  // 答案
  document.write('<table cellspacing=0 style="width:300px;height:300px">')
  for (var i = 0; i < 5; i++) {
    document.write('<tr>')
    for (var j = 0; j < 5; j++) {
      // i是行，j是列，行与列奇偶同行
      // i % 2 == 0 && j % 2 == 0 奇数行和奇数列填色
      // i % 2 != 0 && j % 2 != 0 偶数行和偶数列填色
      if (i % 2 == 0 && j % 2 == 0 || i % 2 != 0 && j % 2 != 0){
        document.write('<td style="background: #000"></td>')
      }else{
        document.write('<td></td>')
      }
    }
    document.write('</tr>')
  }
  document.write('</table>')

  10.(提高题)将100元整钞换成20元、10元、5元、2元、1元零钱，要求零钱总张数为30张，求有多少种换法？假如要求每种纸币必须至少有一张，又有多少种换法呢？
  var a, b, c, d, e;
  var num = 0;
  for (a = 0; a <= 100; a++) {
    for (b = 0; b <= (100 - a) / 2; b++) {
      for (c = 0; c <= (100 - a - 2 * b) / 5; c++) {
        for (d = 0; d <= (100 - a - 2 * b - 5 * c) / 10; d++) {
          for (e = 0; e <= (100 - a - 2 * b - 5 * c - 10 * d) / 20; e++) {
            if (a + b + c + d + e == 30 && (a + 2 * b + c * 5 + d * 10 + e * 20 == 100)){
              num++;
            }
          }
        }
      }
    }
  }
  console.log(num);
*/